package Day2025_02_26;

import java.util.HashMap;
import java.util.Map;

public class LeetCode1419 {
    public int minNumberOfFrogs(String croakOfFrogs) {
        char[] ss = croakOfFrogs.toCharArray();
        Map<Character, Integer> map = new HashMap<>();
        String str = "croak";
        int n = str.length();
        for (int i = 0; i < n; i++) {
            map.put(str.charAt(i), i);
        }
        int[] hash = new int[n];
        for (char ch : ss) {
            if (ch == str.charAt(0)) {
                hash[0]++;
                if (hash[n - 1] > 0) hash[n - 1]--;
            } else {
                int i = map.get(ch);
                if (hash[i - 1] > 0) {
                    hash[i]++;
                    hash[i - 1]--;
                } else return -1;
            }
        }
        for (int i = 0; i < n - 1; i++) {
            if (hash[i] != 0) return -1;
        }
        return hash[n - 1];
    }

//    public int minNumberOfFrogs(String croakOfFrogs) {
//        char[] ch = croakOfFrogs.toCharArray();
//        int n = ch.length;
//        int[] hash = new int[5];
//        for (int i = 0; i < n; i++) {
//            if (ch[i] == 'c') hash[0]++;
//            if (ch[i] == 'r') hash[1]++;
//            if (ch[i] == 'o') hash[2]++;
//            if (ch[i] == 'a') hash[3]++;
//            if (ch[i] == 'k') hash[4]++;
//        }
//        for (int i = 0; i < 5; i++) {
//            if (hash[i] != hash[0]) return -1;
//        }
//        Map<Character, Integer> map = new HashMap<>();
//        for (int i = 0; i < n; i++) {
//            switch (ch[i]) {
//                case 'c' :
//                    map.put('c', map.getOrDefault('c', 0) + 1);
//                    if (map.containsKey('k') && map.get('k') != 0) map.put('k', map.get('k') - 1);
//                    break;
//                case 'r' :
//                    if (map.containsKey('c') && map.get('c') != 0) {
//                        map.put('c', map.get('c') - 1);
//                        map.put('r', map.getOrDefault('r', 0) + 1);
//                    } else return -1;
//                    break;
//                case 'o' :
//                    if (map.containsKey('r') && map.get('r') != 0) {
//                        map.put('r', map.get('r') - 1);
//                        map.put('o', map.getOrDefault('o', 0) + 1);
//                    } else return -1;
//                    break;
//                case 'a' :
//                    if (map.containsKey('o') && map.get('o') != 0) {
//                        map.put('o', map.get('o') - 1);
//                        map.put('a', map.getOrDefault('a', 0) + 1);
//                    } else return -1;
//                    break;
//                case 'k' :
//                    if (map.containsKey('a') && map.get('a') != 0) {
//                        map.put('a', map.get('a') - 1);
//                        map.put('k', map.getOrDefault('k', 0) + 1);
//                    } else return -1;
//                    break;
//            }
//        }
//        if (map.getOrDefault('k', -1) == 0) return -1;
//        return map.getOrDefault('k', -1);
//    }
}
